package com.study.easyexcel.api.annotation;

import com.study.easyexcel.common.constant.ExcelConstants;
import com.study.easyexcel.common.enums.ExcelPattern;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 数据绑定验证，验证从Excel导入的数据是否符合规定，如：字符的长度，数值是否为空等
 *
 * @author yuhuan
 * @date 2023/5/12
 */
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface ExcelBind {
    ExcelPattern[] value();

    /**
     * 错误消息定义，位置与匹配规则一一对应，如未设置则表示使用默认消息
     */
    String[] message() default {};

    /**
     * 被验证字段的中文名
     */
    String name() default "";

    /**
     * 是否执行数据分割验证；将数据分割后再进行验证，分割符{@link ExcelConstants#EXCEL_HYPHEN}
     */
    boolean cut() default false;

    /**
     * 数据字符长度验证时的最大字符长度，配合{@link ExcelPattern#SIZE}
     */
    int maxLen() default Integer.MAX_VALUE;

    /**
     * 数据字符长度验证时的最小字符长度，配合{@link ExcelPattern#SIZE}
     */
    int minLen() default Integer.MIN_VALUE;

    /**
     * 正则表达式，配合{@link ExcelPattern#PATTERN}
     */
    String regexes() default "";
}
